Concept
- 符号
- 单引号:’’
- 双引号:””
- 花括号:{}
- 反括号:``
- 双括号:(())
- $
- #
- *
- \
- $?:表示保留上一个命令的执行结果
- $0:函数名
- $1:函数的第一个参数
- 回车/分号:作为一行命令结束的标志。
- 管道(|),逻辑与(&&),逻辑或(||):连接命令的特殊字符
- 变量
- 定义变量
- 数组
- 运算符
- 算数运算符
- 关系运算符
- 大于:-lt
- 小于:-gt
- 等于:-eq
- 与:-a
- 或:-o
- 条件判断符
-
- 函数
- 定义
- 调用
- 返回值
- 关键命令
- expr
- read
- let
- sed
- grep
- curl
Code Style
- 变量
- 变量名大小写不限,但惯例上采用全大写的方式
- 定义变量时,=的前后都不能有空格
Key Point
执行顺序
- 别名:alias
- 关键字:keyword
- 函数:function
- 内建命令:built in
- 哈希索引:hash
- 外部命令:command
正则表达式
描述字符串结构模式的表达方法。正则表达式可以用/包围起来表示开始和结束。
使用场景:(字符串)
- 复杂字符串的搜索,替换
- 字符串验证
元字符(metacharacter):正则表达式中规定的特殊字符,具有特殊指代的字符
- . :匹配除了换行符以外的任意字符(字符)
- : 前面的内容可以连续重复使用任意次(数量)
- +: +前面的内容可以连续重复一次或多次(数量)
- ? :加在字符限定符后面时,表示重复0次或一次(数量);加在其他数量匹配符后面时,表示懒惰匹配符。
- {n}:重复n次
- {n,}:重复n次或更多次
- {n,m}:重复n到m次
- \n:换行符
- ^ :匹配字符串的开始(位置)
- $ :匹配字符串的结束(位置)
- \b:代表单词的开头或结尾(位置)==>英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
- \B:代表不是单词的开头或结尾(位置)
- \d:匹配一位数字(字符)
- \D:匹配任意一位非数字(字符)
- \w:匹配字母或数字或下划线(字符)
- \W:匹配任意不是字母,数字,下划线(字符)
- \s:匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格。(字符)
- \S:匹配任意非空白符。(字符)
- \:转义字符
- / :正则表达式的开始和结束标志。
自定义字符类别(集合)
[]:在方括号中枚举出来,表示匹配方括号中的任意一个。
[^]:在方括号中枚举出来,表示匹配除了方括号中的任意一个。
分支条件(多个条件的或)
|:连接多个判断条件
零宽断言
表示的含义是位置,确定的满足某个条件的位置。
- 零宽度正预测先行断言:(?=exp),表示的是,字符串的某个位置的后面字符串模式满足exp。
- 零宽度正回顾后发断言:(?<=exp),表示的式,字符串的某个位置的前面字符串模式满足exp。
- 零宽度负预测先行断言:(?!=exp),表示的是,字符串的某个位置的后面字符串模式不满足exp。
- 零宽度负回顾后发断言:(?<!exp),表示的式,字符串的某个位置的前面字符串模式不满足exp。
匹配规格
- 懒惰/贪婪规则:默认是贪婪匹配,即匹配最多的字符;加?后,转变为懒惰匹配,匹配最少的字符。
- 最先匹配:匹配最先匹配到的字符串。
常用的局部正则表达式
- \s+:多个空格
- ….\b:从单词的右边开始匹配,或直观的来说,是匹配的字符串的右边是分隔符,即空格,标点符号或换行符。
正则表示式选项
- 大小写选项。
- 单行
- 多行
- 忽略空白